# cython: language_level=3
#!/usr/bin/python
#-- coding:utf8 --

import os
import datetime
import logging.config
import logging

__file__ = './model_logger/'
BASE_DIR = os.path.abspath(__file__)


def mkdir_log_path(log_dir):
    if not os.path.isdir(log_dir):
        print("创建%s目录" % log_dir)
        os.makedirs(log_dir)
    # else:
    #     print('已存在log== {log_dir} 目录，跳过'.format(log_dir=log_dir))


# 日志配置文件
def logging_file_path(log_type):
    log_path = os.path.join(BASE_DIR, 'LOGGER')
    mkdir_log_path(log_path)
    return os.path.join(log_path, "%s-%s.log" % (datetime.datetime.now().strftime('%Y_%m_%d.log'),log_type))


LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'default': {
            'format': '%(asctime)s %(filename)s[line:%(lineno)d] [%(levelname)s] - %(message)s ',
            'datefmt': '%Y-%m-%d %H:%M:%S'
        }
    },
    'handlers': {
        'null': {
            'level': 'DEBUG',
            'class': 'logging.NullHandler',
        },
        'console': {
            'class': 'logging.StreamHandler',
            'level': 'DEBUG',
            'formatter': 'default'
        },
        'info': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': logging_file_path('info'),
            #'maxBytes': 1024 * 1024 * 50,
            #'backupCount': 30,
            'formatter': 'default',
            'encoding':'utf8',
        },
        'warning': {
            'level': 'WARNING',
            'class': 'logging.FileHandler',
            'filename': logging_file_path('warning'),
            #'maxBytes': 1024 * 1024 * 50,
            #'backupCount': 30,
            'formatter': 'default',
        },
        'errors': {
            'level': 'ERROR',
            'class': 'logging.FileHandler',
            'filename': logging_file_path('error'),
            #'maxBytes': 1024 * 1024 * 50,
            #'backupCount': 30,
            'formatter': 'default',
        },
    },
    'loggers': {
        'loggers': {
            'level': 'DEBUG',
            'handlers': ['console', 'info', 'warning', 'errors'],
            'propagate': True
        }
    }
}

def get_logger():
    logging.config.dictConfig(LOGGING)
    return logging.getLogger("loggers")

if __name__ == '__main__':
#     logging_file_path("error")
    get_logger().error('test')

